package com.sugon.dao;

import com.sugon.entity.DevMainBaseEntity;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * 维护库Dao
 *
 * @author sugon
 * @date 2019-07-16 14:46:43
 */
public interface DevMainBaseDao extends BaseDao<DevMainBaseEntity> {

    @Select("SELECT * FROM DEV_MAIN_BASE WHERE CODE = #{code}")
    DevMainBaseEntity getByDcode(@Param("code") String code);

    /**
     * 条件查询维护库总数
     *
     * @param map 查询条件
     * @return
     */
    int queryAllTotal(Map<String, Object> map);

    /**
     * 条件查询维护库记录
     *
     * @param map 查询条件
     * @return
     */
    List<DevMainBaseEntity> queryAllList(Map<String, Object> map);

    /**
     * 根据规程ID获取维护库记录
     *
     * @param planId 规程ID
     * @return
     */
    List<DevMainBaseEntity> getBaseInfo(@Param("planId") String planId);

    /**
     * 分页查询，分页获取维护库记录
     *
     * @param map 规程ID
     * @return
     */
    List<DevMainBaseEntity> getBaseInfoPage(Map<String, Object> map);

    /**
     * 条件查询维护库记录数
     *
     * @param map
     * @return
     */
    int getBaseInfoTotal(Map<String, Object> map);

    /**
     * 条件查询维护库记录数
     *
     * @param map
     * @return
     */
    int queryAllByDevTotal(Map<String, Object> map);

    /**
     * 条件查询维护库记录数
     *
     * @param map
     * @return
     */
    List<DevMainBaseEntity> queryAllByDevList(Map<String, Object> map);

    /**
     * 根据设备维护项选项编码列表，查询在用的设备维护项列表
     *
     * @param codeList 设备维护项选项编码列表
     * @return
     */
    List<DevMainBaseEntity> listByCodeList(@Param("codeList") List<String> codeList);

    /**
     * 根据DCODE前缀，找到最新的DCODE
     *
     * @param dcodePrefix DCODE前缀
     * @return
     */
    String getLastDCode(@Param("dcodePrefix") String dcodePrefix);

}
